In a conventional communication system, to ensure reliable transmission of either (or both) of a segment indicating arbitrary TCP/IP (Internet Protocol) data or ACK (ACKowledgment) packets of an acknowledgment response, the TCP includes a mechanism that sets a retransmission timer when transmitting the segment and that assumes the segment is lost and performs retransmission if the ACK is not sent back within the set time.
However, in a communication environment with large delay variation such as mobile communication, the arrival of the ACK is delayed by a sudden increase of delays, and a retransmission timeout may occur although the segment is not lost. This is known as a spurious timeout.
There are the following two problems for the spurious timeout. The first one is that unnecessary retransmissions occur. The second one is that along with a retransmission timeout, a congestion window is decreased by the congestion control for adjusting the window size based on congestion information detected by a communication device on the transmitting side, and the throughput is reduced. In this regard, the congestion window is a TCP state variable that limits the transmittable size of TCP.
So far, there are proposals for a detection method of detecting the spurious timeout in a communication device on the transmitting side and a response method of recovering the state of congestion control of TCP after the detection of the spurious timeout. The detection methods and the response methods described below can be used by any combination.
Non-Patent Document 1 proposes an Eifel Detection algorithm as a spurious timeout detection method. The Eifel Detection algorithm uses a time stamp option of TCP to detect the spurious timeout. The communication device on the transmitting side stores the transmission time of the segment and determines the retransmission timeout as the spurious timeout if the time stamp sent back by the ACK matches the transmission time of the original segment.
Non-Patent Document 2 proposes an F-RTO (Forward RTO/Recovery) algorithm as a spurious timeout detection method. The F-RTO detects the spurious timeout based on the arrival pattern of the ACK immediately after the occurrence of the retransmission timeout.
Non-Patent Document 3 proposes an Eifel Response algorithm as a spurious timeout response method. After the detection of the spurious timeout, the Eifel Response algorithm recovers the state of the congestion control of TCP (slow start threshold and congestion window size) to the state before the retransmission timeout. By applying the above method, the communication can be continued without reducing the transmission speed even if the spurious timeout occurs.
Non-Patent Document 4 proposes the following two algorithms as spurious timeout response methods. The first algorithm decreases the slow start threshold to half the flight size and decreases the congestion window to one segment when the spurious timeout is detected. The flight size denotes the size of transmission data that is not transmission-acknowledged. The congestion window is later increased by the slow start. The method shows excellent throughput characteristics when the wireless bearer speed changes before and after the spurious timeout.
The second algorithm decreases the slow start threshold and the congestion window to half the flight size when the spurious timeout is detected. The congestion window is later increased according to a congestion avoidance algorithm. The method is effective when the wireless bearer is slow.
Next, the retransmission control of TCP will be described. The TCP includes a Fast Retransmit algorithm that immediately performs a retransmission after receiving three duplicate ACKs from the receiving device. Since the Fast Retransmit algorithm performs retransmission without waiting for the retransmission timeout, the Fast Retransmit algorithm can recover the loss faster than the retransmission method using a retransmission timer. If three duplicate ACKs are not received, the retransmission timer performs the loss recovery.
Non-Patent Document 5 proposes an algorithm called Limited Transmit that supports the operation of the Fast Retransmit algorithm. When the first and second duplicate ACKs are received, the Limited Transmit algorithm transmits unsent segments exceeding the congestion window by up to two segments. After receiving the segments, the receiving device sends back the duplicate ACKs. Therefore, the possibility of the execution of the loss recovery by the Fast Retransmit algorithm is increased.
Examples of conventional techniques of this type include Patent Documents 1 to 4.    Patent Document 1: JP 2006-217235 A    Patent Document 2: JP 2006-173961 A    Patent Document 3: JP 2006-157918 A    Patent Document 4: JP 2005-533449 A    Non-Patent Document 1: R. Ludwig and M. Meyer, “The Eifel Detection Algorithm for TCP,” RFC3522, April 2003.    Non-Patent Document 2: P. Sarolahti and M. Kojo, “Forward RTO-Recovery (F-RTO): An Algorithm for Detecting Spurious Retransmission Timeouts with TCP and the Stream Control Transmission Protocol (SCTP),” RFC4138, August 2005.    Non-Patent Document 3: R. Ludwig and A. Gurtov, “The Eifel Response Algorithm for TCP,” RFC4015, February 2005.    Non-Patent Document 4: P. Sarolahti, “Congestion Control on Spurious TCP Retransmission Timeouts,” IEEE Globecom '03, vol. 2, pp. 682-686, December 2003.    Non-Patent Document 5: M. Allman, H. Balakrishnan, and S. Floyd, “Enhancing TCP's Loss Recovery Using Limited Transmit,” RFC3042, January 2001. However, in the conventional communication systems described above, when the segment loss occurs subsequent to the spurious timeout, there are the following two problems for the response algorithm that decreases the slow start threshold and the congestion window when the spurious timeout is detected.
The first drawback relates to the Limited Transmit algorithm. After immediately decreasing the congestion window to a large extent when the spurious timeout is detected, if the segment loss occurs subsequent to the spurious timeout, the operation of the Limited Transmit algorithm may be inhibited. If the congestion window is decreased to a large extent, there will be a situation in which unsent segments are not included in a range of the congestion window size plus two segments. In such a situation, the Limited Transmit algorithm cannot transmit unsent segments when the first and second duplicate ACKs are received. As a result, loss recovery cannot be realized in an efficient manner, and the throughput is reduced.
The second drawback is that the slow start threshold is unnecessarily decreased when the segment loss occurs subsequent to the spurious timeout. In the TCP, only once is available for decreasing the slow start threshold at a round-trip time. However, in the method of decreasing the slow start threshold when the spurious timeout is detected, when the segment loss occurs subsequent to the spurious timeout, the slow start threshold is decreased twice when the spurious timeout is detected and when the segment loss is detected. When the slow start threshold is decreased, the rate of increase in the congestion window is prevented, and the throughput is reduced.
The present invention has been made in view of the foregoing problems, and an object of the present invention is to provide a communication system, a communication device, and a communication method, whereby loss recovery is enabled in an efficient manner to improve the throughput if a segment loss occurs subsequent to a spurious timeout while a response algorithm for changing a slow start threshold and a congestion window is being executed.